import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
plt.rc("font", family='MicroSoft YaHei', weight="bold")

# 生成回归数据集，1000个样本，1个特征，设置噪声
X, y = make_regression(n_samples=1000, n_features=1, noise=20, random_state=42)

# 将数据集分为训练集和测试集，80%用于训练，20%用于测试
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型
linear_regressor = LinearRegression()

# 使用训练数据训练模型
linear_regressor.fit(X_train, y_train)

# 使用模型进行预测
y_pred = linear_regressor.predict(X_test)

# 计算均方误差 (MSE)
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse:.2f}")

# 计算 R² 分数
r2 = r2_score(y_test, y_pred)
print(f"R² 值: {r2:.4f}")

# 绘制数据点
plt.scatter(X_test, y_test, color='blue', label='真实值')

# 绘制回归线
plt.plot(X_test, y_pred, color='red', linewidth=2, label='预测回归线')

# 添加标题和标签
plt.title("线性回归预测")
plt.xlabel("特征")
plt.ylabel("目标")

# 显示图例
plt.legend()

# 显示图形
plt.show()
